/**
 * @description utils controller
 */

const {
  ErrorModel, SuccessModel
} = require("../model/ResModel");
const {
  uploadFileSizeFailInfo
} = require("../model/ErrorInfo");
const fs = require("fs");
const path = require("path");



// 上传文件最大尺寸
const MAX_SIZE = 1024 * 1024 * 1024;

/**
 * 保存文件
 * @param {number} size
 * @param {string} type
 * @param {string} name
 * @param {string} filePath
 */
async function saveFile({ size, mimetype, originalname, path }) {
  if (size > MAX_SIZE) {
    // 提示文件上传体积过大
    return new ErrorModel(uploadFileSizeFailInfo);
  }

  // 保存文件
  // 文件扩展名
  const fileType = (mimetype.split("/"))[1];
  // 定义文件名 fileName 使用时间戳
  const fileName = Date.now() + originalname.split(".")[0] + "." + fileType;
  // 新文件路径
  const newPath = path + fileName;

  await fs.rename(path, newPath, async (err, res) => {
    if (err) {
      return new ErrorModel(uploadFileSizeFailInfo);
    }

  });

  // 返回信息 /2.jpg
  return new SuccessModel({
    url: "/" + newPath.split("\\")[newPath.split("\\").length - 1]
  });
}

module.exports = {
  saveFile
};
